import process from 'node:process'
import { defineManifestConfig } from '@uni-helper/vite-plugin-uni-manifest'
import dayjs from 'dayjs'
import { loadEnv } from 'vite'
import pkg from './package.json'
import toutiaoConfig from './src/toutiao.config.json'
import weixinConfig from './src/weixin.config.json'

const versionName = pkg.version

const config = { versionName, dependencies: pkg.dependencies }
if (process.env.NODE_ENV === 'production') {
  config.versionCode = dayjs().unix()
}

const env = loadEnv(process.env.NODE_ENV, process.cwd())
const { VITE_APP_TITLE, VITE_UNI_APPID, VITE_APP_BASE } = env

export default defineManifestConfig({
  'name': VITE_APP_TITLE,
  'appid': VITE_UNI_APPID,
  ...config,
  'transformPx': false,
  /* 5+App特有相关 */
  'app-plus': {
    usingComponents: true,
    nvueStyleCompiler: 'uni-app',
    compilerVersion: 3,
    splashscreen: {
      alwaysShowBeforeRender: true,
      waiting: true,
      autoclose: true,
      delay: 0,
    },
    /* 模块配置 */
    modules: {
      // /** 登陆模块 */
      // OAuth: {},
      // /** 定位模块 */
      // Geolocation: {},
      // /** 支付模块 */
      // Payment: {},
      // /** 相机模块 */
      // Camera: {},
      // /** 分享模块 */
      // Share: {},
    },
    /* 应用发布信息 */
    distribute: {
      /* android打包配置 */
      android: {
        minSdkVersion: 21,
        targetSdkVersion: 30,
        abiFilters: ['armeabi-v7a', 'arm64-v8a'],
        permissions: [
          '<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE"/>',
          '<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>',
          '<uses-permission android:name="android.permission.VIBRATE"/>',
          '<uses-permission android:name="android.permission.READ_LOGS"/>',
          '<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>',
          '<uses-feature android:name="android.hardware.camera.autofocus"/>',
          '<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>',
          '<uses-permission android:name="android.permission.CAMERA"/>',
          '<uses-permission android:name="android.permission.GET_ACCOUNTS"/>',
          '<uses-permission android:name="android.permission.READ_PHONE_STATE"/>',
          '<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>',
          '<uses-permission android:name="android.permission.WAKE_LOCK"/>',
          '<uses-permission android:name="android.permission.FLASHLIGHT"/>',
          '<uses-feature android:name="android.hardware.camera"/>',
          '<uses-permission android:name="android.permission.WRITE_SETTINGS"/>',
          /** 拨打电话权限 */
          '<uses-permission android:name="android.permission.CALL_PHONE"/>',
          /** 麦克风权限 */
          // '<uses-permission android:name="android.permission.RECORD_AUDIO"/>',
          /** 登录鉴权 */
          '<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>',
          /** 省电优化 */
          '<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />',
          /** 网络访问权限 */
          '<uses-permission android:name="android.permission.INTERNET" />',
          /** 存储写入权限 */
          '<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />',
          /** 开机自启动权限 */
          '<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />',
          /** 定位权限 */
          // '<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />',
          // '<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />',
          // '<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />',
          // '<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"/>',
          // '<uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION"/>',
          /** unipush2 推送权限 */
          // 获取任务信息权限
          // '<uses-permission android:name="android.permission.GET_TASKS" />',
          // '<uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />',
          /** 厂商通道必需权限  小米 */
          // '<uses-permission android:name="android.permission.BROADCAST_PACKAGE_ADDED" />',
          // '<uses-permission android:name="android.permission.BROADCAST_PACKAGE_CHANGED" />',
          // '<uses-permission android:name="android.permission.BROADCAST_PACKAGE_INSTALL" />',
          // '<uses-permission android:name="android.permission.BROADCAST_PACKAGE_REPLACED" />',
          // '<uses-permission android:name="android.permission.RESTART_PACKAGES" />',
          /** 厂商通道必需权限 华为 */
          // '<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />',
        ],
      },
      /* ios打包配置 */
      ios: {
        privacyDescription: {
          /** 相册读取权限描述 */
          NSPhotoLibraryUsageDescription: '应用需要访问相机用于正常的拍摄比如发布照片，修改图像，意见反馈，联系客服等功能拍照上传图片',
          /** 相册写入权限描述 */
          NSPhotoLibraryAddUsageDescription: '应用需要访问相机用于正常的拍摄比如发布照片，修改图像，意见反馈，联系客服等功能拍照上传图片或下载保存图片',
          /** 运行期访问位置权限描述 */
          NSLocationWhenInUseUsageDescription: '应用运行期需要访问您的位置。用于根据当前位置推荐对应的产品和服务功能',
          /** 运行期后台访问位置权限描述 */
          // NSLocationAlwaysAndWhenInUseUsageDescription: '该应用需要持续获取用户位置信息，以便为你进行导航',
          /** 后台运行访问位置权限描述 */
          // NSLocationAlwaysUsageDescription: '该应用需要获取你的位置信息，以便为你提供当前位置信息',
          /** 摄像头使用权限描述 */
          NSCameraUsageDescription: '该应用需要使用你的摄像头，以便于相机拍摄，上传、发布照片',
          /** 麦克风使用权限描述 */
          // NSMicrophoneUsageDescription: '该应用需要使用你的麦克风，以便于视频录制、语音识别、语音聊天',
          /** 使用通讯录权限描述 */
          // NSContactsUsageDescription: '该应用需要访问你的通讯录，以便于用户与买家联系',
          /** 使用日历权限描述 */
          // NSCalendarsUsageDescription: '该应用需要访问你的日历，以便于获取更好的使用体验',
          /** 系统提醒事项权限描述 */
          // NSRemindersUsageDescription: '该应用需要访问提醒事项，以便于获取更好的使用体验',
          /** 后台使用蓝牙权限描述 */
          // NSBluetoothAlwaysUsageDescription: '该应用需要使用蓝牙功能以连接和使用蓝牙设备',
          /** 使用蓝牙权限描述 */
          // NSBluetoothPeripheralUsageDescription: '该应用需要使用蓝牙功能以座位外围设备与其他设备进行通信',
          /** 访问本地网络权限描述 */
          // NSLocalNetworkUsageDescription: 'App不会连接到您所用网络上的设备，只会检测与您本地网关的连通性。用户也可以在 iOS 设备的设置-隐私-本地网络界面修改此App的权限设置',
        },
      },
      /* SDK配置 */
      sdkConfigs: {
        // /** 第三方授权登录 */
        // oauth: {
        //   weixin: {
        //     appid: '',
        //     UniversalLinks:'',
        //   },
        // },
        // /** 第三方地图定位 */
        // geolocation: {
        //   /** 系统定位 */
        //   system: {
        //     __platform__: ['ios', 'android'],
        //   },
        //   /** 高德地图 */
        //   amap: {
        //     name: '',
        //     // ['ios', 'android'],
        //     __platform__: ['ios', 'android'],
        //     appkey_ios: '',
        //     appkey_android: '',
        //     UniversalLinks:'',
        //   },
        // },
        // /** 第三方支付 */
        // payment: {
        //   alipay: {
        //     __platform__: ['ios', 'android'],
        //   },
        //   weixin: {
        //     __platform__: ['ios', 'android'],
        //     appid: '',
        //     UniversalLinks:'',
        //   },
        // },
        // share: {
        //   weixin: {
        //     appid: '',
        //     UniversalLinks:'',
        //   },
        // },
      },
      /* 图标配置 */
      icons: {
        android: {
          hdpi: 'unpackage/res/icons/72x72.png',
          xhdpi: 'unpackage/res/icons/96x96.png',
          xxhdpi: 'unpackage/res/icons/144x144.png',
          xxxhdpi: 'unpackage/res/icons/192x192.png',
        },
        ios: {
          appstore: 'unpackage/res/icons/1024x1024.png',
          ipad: {
            'app': 'unpackage/res/icons/76x76.png',
            'app@2x': 'unpackage/res/icons/152x152.png',
            'notification': 'unpackage/res/icons/20x20.png',
            'notification@2x': 'unpackage/res/icons/40x40.png',
            'proapp@2x': 'unpackage/res/icons/167x167.png',
            'settings': 'unpackage/res/icons/29x29.png',
            'settings@2x': 'unpackage/res/icons/58x58.png',
            'spotlight': 'unpackage/res/icons/40x40.png',
            'spotlight@2x': 'unpackage/res/icons/80x80.png',
          },
          iphone: {
            'app@2x': 'unpackage/res/icons/120x120.png',
            'app@3x': 'unpackage/res/icons/180x180.png',
            'notification@2x': 'unpackage/res/icons/40x40.png',
            'notification@3x': 'unpackage/res/icons/60x60.png',
            'settings@2x': 'unpackage/res/icons/58x58.png',
            'settings@3x': 'unpackage/res/icons/87x87.png',
            'spotlight@2x': 'unpackage/res/icons/80x80.png',
            'spotlight@3x': 'unpackage/res/icons/120x120.png',
          },
        },
      },
      splashscreen: {
        useOriginalMsgbox: true,
      },
    },
  },
  /* 快应用特有相关 */
  'quickapp': {},
  /* 小程序特有相关 */
  'mp-weixin': {
    appid: weixinConfig.appid,
    setting: {
      urlCheck: false,
      es6: true,
      postcss: true,
      minified: true,
    },
    usingComponents: true,
    lazyCodeLoading: 'requiredComponents',
    optimization: {
      subPackages: true,
    },
  },
  'mp-alipay': {
    usingComponents: true,
  },
  'mp-baidu': {
    usingComponents: true,
  },
  'mp-toutiao': {
    appid: toutiaoConfig.appid,
    setting: {
      urlCheck: false,
      es6: true,
      postcss: true,
      minified: true,
    },
    usingComponents: true,
  },
  'h5': {
    router: {
      mode: 'history',
      base: VITE_APP_BASE,
    },
    // sdkConfigs: {
    //   maps: {
    //     amap: {
    //       key: '',
    //       securityJsCode: '',
    //     },
    //   },
    // },
  },
  'uniStatistics': {
    enable: false,
  },
  'vueVersion': '3',
})
